ระบบ ระบบนิเวศ HIP ถูกออกแบบเป็นชั้นการดึงข้อมูลแบบบางเพื่อให้โค้ดแหล่งที่มาทำงานร่วมกันได้ระหว่างสถาปัตยกรรมของ AMD และ NVIDIA โดยใช้เทคโนโลยี ROCm (Radeon Open Compute) สแต็ก โดยเฉพาะการใช้งาน สถาปัตยกรรมระบบหลายประเภท (HSA) รันไทม์ และ ไดรเวอร์ฟิวชันเคอร์เนล (KFD).
1. การเริ่มต้นระบบเบื้องต้น
การเริ่มต้นเริ่มจากการแลกเปลี่ยนข้อมูลระหว่างไดรเวอร์เคอร์เนลระดับต่ำผ่าน hsa_init(0, ...) และ hsaKmtOpenKFD(...). การเรียกใช้เหล่านี้สร้างสะพานการสื่อสารระหว่างแอปพลิเคชันในพื้นที่ผู้ใช้กับฮาร์ดแวร์กราฟิกของ AMD
2. การตรวจจับโครงสร้างและการค้นพบคุณสมบัติ
ก่อนเริ่มทำงานเคอร์เนล รันไทม์จะตรวจสอบความสามารถของฮาร์ดแวร์โดยใช้ hsaKmtAcquireSystemProperties และ hsaKmtGetNodeProperties. มันเชื่อมโยงหน่วยความจำจริงกับโหนดกราฟิกโดยใช้ hsaKmtMapMemoryToGPUNodes, เพื่อให้มั่นใจว่าตารางหน้า (page table) มองเห็นได้สำหรับอุปกรณ์นั้น
3. กระบวนการแปลงโค้ด
สะพานเชื่อมระหว่าง CUDA และ HIP ถูกสร้างจากสองเสาหลัก: hipify-perl (เครื่องแปลที่ใช้รูปแบบการจับรูปแบบพิเศษ) และ hipcc (ตัวห่อคอมไพเลอร์)
hipify-perl square.cu > square.cpp
hipcc square.cpp -o square.out
4. ตรรกะการจัดการเวอร์ชัน
ความเข้ากันได้ถูกบังคับใช้ผ่านสูตรที่แม่นยำ เพื่อให้มั่นใจว่า hipRuntimeGetVersion สอดคล้องกับตารางขยายของ HSA:
$$\text{HIP\_VERSION} = \text{MAJOR} \times 10^7 + \text{MINOR} \times 10^5 + \text{PATCH}$$